// SOP（标准作业流程）相关的类型定义

/**
 * SOP节点定义
 */
export interface SopNode {
  /** 节点执行顺序 */
  order: number;
  /** 节点名称 */
  node: string;
  /** 节点所属阶段 */
  stage: string;
}

/**
 * SOP策略链定义
 */
export interface SopChain {
  /** 策略链ID */
  chain_id: string;
  /** 策略链名称 */
  name: string;
  /** 策略名称 */
  strategy_name: string;
  /** 营销场景 */
  scenario: string;
  /** 策略类型：预定义或自定义 */
  type: 'predefined' | 'custom';
  /** 策略描述 */
  description: string;
  /** 客户画像 */
  customer_profile: string;
  /** 策略节点列表 */
  nodes: SopNode[];
  /** 元数据 */
  metadata: Record<string, any>;
}

/**
 * SOP策略列表响应结构
 */
export interface SopChainsResponse {
  /** 请求是否成功 */
  success: boolean;
  /** 策略链列表 */
  chains: SopChain[];
  /** 策略总数 */
  total: number;
  /** 用户名（可选） */
  user_name?: string | null;
  /** 客户画像（可选） */
  customer_profile?: string | null;
}

/**
 * SOP API请求参数
 */
export interface SopApiParams {
  /** 用户名筛选 */
  user_name?: string;
  /** 客户画像筛选 */
  customer_profile?: string;
  /** 策略类型筛选 */
  type?: 'predefined' | 'custom';
  /** 营销场景筛选 */
  scenario?: string;
}

/**
 * SOP节点库结构
 */
export interface SopNodeLibrary {
  /** 请求是否成功 */
  success: boolean;
  /** 按阶段分组的节点库 */
  nodes: Record<string, string[]>;
  /** 节点总数 */
  total: number;
}

/**
 * 创建SOP策略的请求参数
 */
export interface CreateSopChainRequest {
  /** 策略名称 */
  name: string;
  /** 策略描述 */
  description: string;
  /** 客户画像 */
  customer_profile: string;
  /** 营销场景 */
  scenario: string;
  /** 策略节点列表 */
  nodes: SopNode[];
}

/**
 * 更新SOP策略的请求参数
 */
export interface UpdateSopChainRequest {
  /** 策略名称 */
  name: string;
  /** 策略描述 */
  description: string;
  /** 客户画像 */
  customer_profile: string;
  /** 营销场景 */
  scenario: string;
  /** 策略节点列表 */
  nodes: SopNode[];
}

/**
 * 创建SOP策略的响应结构
 * API直接返回创建的策略对象
 */
export type CreateSopChainResponse = SopChain;

/**
 * 更新SOP策略的响应结构
 * API直接返回更新后的策略对象
 */
export type UpdateSopChainResponse = SopChain;

/**
 * SOP分析API的请求参数
 */
export interface SopAnalysisRequest {
  /** 用户查询 */
  query: string;
  /** 分析模式: "dynamic" 或 "preset" */
  mode: 'dynamic' | 'preset';
  /** 会话ID (可选) */
  session_id?: string | null;
  /** 用户名 */
  user_name: string;
}

/**
 * SOP分析API的响应节点
 */
export interface SopAnalysisNode {
  /** 节点ID */
  id: string;
  /** 节点名称/标题 */
  name: string;
  /** 节点类型 */
  type: string;
  /** 节点状态 */
  status: 'pending' | 'active' | 'completed' | 'skipped';
  /** 节点建议内容 */
  content: string;
}

/**
 * SOP分析API的响应结构
 */
export interface SopAnalysisResponse {
  /** 请求是否成功 */
  success: boolean;
  /** 策略链ID */
  chain_id: string;
  /** 策略链名称 */
  chain_name: string;
  /** 分析出的节点列表 */
  nodes: SopAnalysisNode[];
  /** 错误信息 (可选) */
  error?: string;
} 